git 学习笔记

目录

 

1. 配置

2. 删除文件

3. 提交历史记录

3. 撤销操作

4. 远程

5. fetch 和 pull

6. 推送到远程仓库

7. 远程仓库的移除与重命名

8. 分支

9. 变基 rebase


 

1. 配置

1)查看配置信息

$ git config --list

  git config <key>            //查看某一项配置

2)查看user

$ git config user.name 

3)首次配置用户信息

$ git config --global user.name "username"
$ git config --global user.email your_email

2. 删除文件

$ git rm fileName                //删除已跟踪文件,并且连带从工作目录中删除指定文件
$ git rm --cached fileName      //只删除已跟踪文件,不会从磁盘中删除

3. 提交历史记录

$ git log
常用选项
-p  按补丁格式显示每个跟新之间的差异
--stat  显示每次更新的文件修改统计信息
--shortstat 只显示--stat中最后的行数修改添加移除统计
--name-only 仅在提交信息后显示已修改的文件清单
--name-status 显示新增、修改、删除的文件清单
--abbrev-commit 仅显示SHA-1的前几个字符,而非所有的40个字符
--relative-date 使用较短的相对时间显示(比如,"2 weeks ago")
--graph 显示ASCII图形表示的分支合并历史
--decorate 显示每个commit的引用(如:分支、tag等)
--oneline 每个提交记录只以一行的形式显示

常用组合:

$ git log --oneline
$ git log --oneline --graph
$ git log --oneline --graph --all     //以单行简图的形式显示所有的分支

$ git log -n                          //只显示最近的n次提交
$ git log --author authorName         //只显示指定作者相关的提交

3. 撤销操作

$ git commit --amend

例如:

$ git commit -m "new commit"
$ git add newFile
$ git commit --amend

最终只会有一个提交--第二次提交将代替第一次提交的结果

4. 远程

1)查看远程仓库
 

$ git remote
$ git remote -v        //显示需要读写远程仓库使用的git保存的简写与其对应的URL

2)添加远程查库

$ git remote add <shortname>  <url>

例:

$ git remote add origin https://github.com/hello/Hello.git

3)删除远程仓库

$ git remote rm remoteName

5. fetch 和 pull

$ git fetch [remote-name]

访问远程仓库,从中拉取所有你还没有的数据。执行完之后将拥有远程仓库中所有分支的引用,可以随时合并或查看。

需要注意的是,git fetch 命令会将数据拉取到你的本地仓库--它并不会自动合并或修改你当前的工作,当准备好是你必须手动将其合并入你的工作
例:

$ git fetch origin

从远程fetch后可通过如下命令将拉去的分支添加到当前的分支中:

$ git merge origin/master 

其中 origin/master 为fetch下来的分支名称


也可以建立一个分支来指向该远程分支, 如:

$ git checkout -b remote_branch origin/master

fetch的另一个用法:

$ git fetch origin master:newbranch

该命令会在本地新建一个newbranch分支并将远程origin仓库的master分支代码下载到本地newbranch分支

pull:   该命令很少用
$ git pull <远程主机名> <远程分支名>
$ git pull origin master

6. 推送到远程仓库

$ git push [remote-name] [branch-name]

$ git push origin master

只有当你有克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。当你和其他人在同一时间克隆,他们先推送到上游然后你在推送到上游,你的推送就会毫无疑问地被拒绝。你必须先将他们的工作拉取下来并将其合并到你的工作后才能推送。

7. 远程仓库的移除与重命名

移除:

$ git remote rm remoteName

重命名

$ git remote rename oldName newName 

修改地址:

$ git remote origin set-url [new url]

或者先删后加

$ git remote rm origin
$ git remote add origin [url]

8. 分支

1)创建分支

$ git branch branch_name        //创建一个名为branch_name的分支

注:该命令仅创建一个分支,并不会自动切换到新分支中去

2)切换分支

$ git checkout branch_name        //切换到branch_name分支

3)创建分支的同时切换到新创建的分支

$ git branch -b new_branch_name

它是下面两条命令的简写

$ git branch new_branch_name
$ git checkout new_branch_name

4) 删除分支

$ git branch -d branch_name

5)分支的合并
例:将名为test的分支合并到master分支中

$ git checkout master
$ git merge test

6)合并两个没有关系的分支

$ git merge branch_name --allow-unrelated-histories

7)遇到冲突的分支合并
如果在两个不同的分支中,对同一个文件部分进行了不同的修改,Git就没法干净的合并它们。如上面的分支的合并的例子中,如果master分支和test分支都同时对README.md文件进行了修改,那么执行一下命令后
$ git merge test
此时Git已经做了合并操作,但是没有自动地创建一个新的合并提交。Git会停下来,等待你去解决合并产生的冲突。此时你可以在合并冲突后的任意时刻使用git status命令来查看那些因包含合并冲突而处于未合并(unmerged) 状态的文件.
当自己手动解决玩所有文件里的冲突之后,对每个文件使用git add命令将其标记为冲入已解决。一旦暂存这些原本有冲突的文件,Git就会将他们标记为冲突已解决。之后可以使用git commit命令提交完成分支的合并。

8)其他操作

$ git branch -v              //查看每一个分支的最后一次提交
$ git branch -vv             //查看所有的本地分支,并显示更多的信息(是否跟踪远程分支)
$ git branch --merged        //查看已经合并到当前分支的分支
$ git branch --no-merged     //查看没有合并到当前分支的分支

9. 变基 rebase

使用方式一:

$ git checkout experiment
$ git rebase master            //将experiment变基到master分支
$ git checkout master
$ git merge experiment         //合并分支

使用方式二:

$ git rebase [basebranch] [topicbranch]    //将topicbranch变基到basebranch

如上例子:

$ git rebase master experiment            //这样做就不必先checkout到experiment
$ git checkout mater
$ git merge experiment

一般变基的目的是为了确保在向远程分支推送时能保持历史的整洁。在这种情况下,你首先在自己的分支里进行开发,当开发完成时,你需要将你的代码变基到 origin/master上,然后再向主项目提交修改。这样的话,该项目的维护者就不再需要进行整合工作,只需要更快合并即可。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章