git 常见命令

GIT版本控制

git config --global user.name "lisi"
git config --global user.email "350866797@qqcom"

git init

git status

git add

git commit -m ""

git log

git log --pretty=oneline

git reflog

git reset --hard HEAD^^
git reset --hard HEAD^

git reset --hard dfq83khkad
,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100

git diff file
如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff这个命令看看:

git diff HEAD -- readme.txt
命令可以查看工作区和版本库里面最新版本的区别

git checkout -- a.txt 丢弃工作区的修改
git reset HEAD a.txt 把暂存区的修改撤销掉(unstage),重新放回工作区

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

rm del.txt
git status
--真删除
git rm del.txt
git commit -m "remove del.txt"
--误删
git checkout -- del.txt

配置git 方法===================================
创建SSH Key:配置ssh
ssh-keygen -t rsa -C "youremail@example.com"

登陆GitHub,打开“Account settings”,“SSH Keys”页面:
填上任意Title,在Key文本框里粘贴id_rsa.pub

git remote add origin git@github.com:silvercell/testgit.git

git push -u origin master

第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样

git push origin master

---clone 远程
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

-----git分支
Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除分支:git branch -d

-----git 解决冲突
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
git add git commit -m ""

用git log --graph命令可以看到分支合并图。
git log --graph --pretty=oneline --abbrev-commit

----- --no-ff merge
通常,合并分支时,如果可能,Git会用Fast forward模式,
但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

下面我们实战一下--no-ff方式的git merge:
git merge --no-ff -m "merge with no-ff" dev

git log --graph --pretty=oneline --abbrev-commit

----分支策略
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

https://segmentfault.com/q/1010000002477106

---修复bug

git stash
git stash list

git stash pop
git stash apply git stash drop

---删除分支
feature-vulcan分支还没有被合并,
如果删除,将丢失掉修改,如果要强行删除,
需要使用命令git branch -D feature-vulcan。

-- 多人协作

git remote git remote -v
git branch -a

git push origin master
git push origin dev

git pull
git branch --set-upstream dev123 origin/dev

首先,可以试图用git push origin branch-name推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。

--打标签

git tag
git tag v1.0 6224937
git show v1.0

命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
git tag -a -m "blablabla..."可以指定标签信息;
git tag -s -m "blablabla..."可以用PGP签名标签;
命令git tag可以查看所有标签。

-- 标签提交到远程

命令git push origin 可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;

删除先本地删除然后远程删除
命令git tag -d 可以删除一个本地标签;
命令git push origin :refs/tags/可以删除一个远程标签

-- .gitignore
git add -f App.class

需要找出来到底哪个规则写错了,可以用git check-ignore命令检查
git check-ignore -v App.class

-- 配置别名

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

每个仓库的Git配置文件都放在.git/config文件中
git config --global user.name "lisi"
git config --global user.email "350866797@qqcom"

posted @ 2017-03-17 19:32  silvercell  阅读(872)  评论(0)    收藏  举报