您的位置:首页 > 其它

git常用命令及操作流程

jiangbang 2016-05-17 00:00 92 查看
摘要: 个人git学习总结,主要用于平时使用中帮助记忆下常用命令

设置用户名和邮箱

填写用户名和邮箱,
git config –global
这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。

git config  –global user.name 'username'
git config  –global user.email '11111@qq.com'

创建版本库

进入d盘,

创建repository仓库

将仓库转为git仓库

cd d:
mkdir repository
git init


pwd
命令是用于显示当前的目录

git init
把这个目录变成git可以管理的仓库

添加文件到Git仓库

git add <file>     可反复多次使用,添加多个文件;
git commit

时光机穿梭

git status                               查看工作状态
git diff                                  查看修改内容。
git diff HEAD -- test.txt       查看指定文件区别

版本回退

git log                                显示从最近到最远的提交日志
git log –-pretty=oneline    查看历史版本(简略版)
cat test1.txt                            查看test1.txt 内容
git reflog                             查看命令历史,以便确定要回到未来的哪个版本。git
git reset  –hard HEAD^                版本回退(那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ )
git reset  –hard HEAD~100           回退100个版本
git reset  –hard 版本号                  回退到指定版本号的版本
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:

撤销修改

git checkout -- test.txt:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时使用
git reset HEAD test.txt  :当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,
想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
版本回退:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除

rm test.txt                        删除工作区的文件
git rm test.txt                   删除版本库的文件
git commit -m ''               提交到版本库
git checkout -- test.txt     撤销

创建github远程仓库

ls -al ~/.ssh
命令检查是否本地用户主目录有名为.ssh的密钥保存文件夹和密钥文件。

ssh-keygen -t rsa –C “111@qq.com”
创建SSH Key,一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

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

关联远程库,使用命令
git remote add origin https://github.com/jiangbang/repository.git[/code]   远程库的名字就是origin,这是Git默认的叫法b

关联后,使用命令
git push -u origin master
第一次推送master分支的所有内容,每次本地提交后,只要有必要,就可以使用命令
git push origin master
推送最新修改;需要输入github用户名,密码

创建与合并分支

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
本地创建+切换分支:git checkout -b V1.5 origin/V1.5
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
强行删除:    git branch -D <name>
查看分支合并图:git log --graph  <name>

分支现场保存

保存支线    git stash
恢复支线    git stash apply
删除支线    git stash drop
恢复并删除  git stash pop

多人协作

多人协作的工作模式通常是这样:

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

2. 如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;

3. 如果合并有冲突,则解决冲突,并在本地提交;

4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name> 推送就能成功!

查看远程库信息,使用git remote -v;
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;
从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

标签

命令git push origin <tagname>可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签;

补充

运行 git fetch,可以将远程分支信息获取到本地,再运行 git checkout -b local-branchname origin/remote_branchname   就可以将远程分支映射到本地命名为local-branchname  的一分支。

git相关学习链接

廖雪峰老师的官方网站:http://www.liaoxuefeng.com/

手把手教git: http://blog.jobbole.com/78960/

训练动手能力的git操作网站:http://pcottle.github.io/learnGitBranching/?demo