git的基本命令及使用

  git的基本命令及使用
  
  1. 设置名字和email
  
  git config --global user.name "Jhon"
  
  git config --global user.email "[email protected]"
  
  如果想设置局信息,把global去掉即可
  
  2. 克隆项目
  
  git clone https://github.com/njueyupeng/vscode-uxcool-snippets
  
  3. 初始化项目
  
  cd project
  
  git init
  
  4. 基本的工作流程
  
  1. 创建或修改文件
  
  2. 使用 **git add** 命令添加新创建或修改的文件到本地缓存区
  
  3. 使用 **git commit** 命令提交到本地代码库
  
  4. (可选,如果有可以同步的远程代码库) 使用 **git push** 命令将本地代码库同步到远程代码库

  5. git add
  
  touch file1 file2 file3
  
  echo "test" >> file1
  
  echo "test" >> file2
  
  echo "test" >> file3
  
  git add file1 file2 file3
  
  6. git diff
  
  git diff --cached //查看缓存区哪些文件被更改了(git diff命令后,输入q才可以退出)
  
  git diff //回显示所有已做的但是没有加入到索引的修改
  
  7. git commit
  
  git commit -m "message" //将缓存区文件提交到本地仓库
  
  git commit -a -m "message" //将偶有没有加到缓存区的修改也一起提交到本地仓库,但是 **-a** 不会提交新建的文件
  
  如果是修改文件,需要使用 git add 命令提交到缓存区才可以提交,如果是删除文件,则直接使用 git rm命令删除后会自动将已经删除的文件的信息添加大缓存区,git commit提交后就会将本地仓库中对应的文件删除。
  
  8. git remote
  
  可以使用git remote 命令将本地仓库关联到远端服务器。
  
  git remote add origin https://github.com/njueyupeng/shiyan.git
  
  1
  
  git remote add 命令用于添加远程主机
  
  origin是主机名,此处可以自定义,不一定非要使用 origin
  
  后面的地址为远程仓库地址
  
  # 需要输入仓库对应的用户名和密码
  
  $ git push origin master
  
  9. 分支
  
  Git 的分支可以让你在主线(master分支)之外进行代码提交,同时又不会影响代码库主线。分支的作用体现在多人协作开发中,比如一个团队开发软件,你负责独立的一个功能需要一个月的时间来完成,你就可以创建一个分支,只把该功能的代码提交到这个分支,而其他同事仍然可以继续使用主线开发,你每天的提交不会对他们造成任何影响。当你完成功能后,测试通过再把你的功能分支合并到主线。
  
  一个Git仓库可以维护很多开发分支。现在我们来创建一个新的叫 experimental的分支:
  
  git branch experimental
  
  1
  
  运行git branch命令可以查看当前的分支列表,以及目前的开发环境处在哪个分支上:
  
  $ git branch
  
  experimental
  
  * master
  
  
  experimental 分支是你刚才创建的,master分支是Git系统默认创建的主分支。星号标识了你当工作在哪个分支下,输入git checkout 分支名可以切换到其他分支:
  
  $ git checkout experimental
  
  Switched to branch www.yongshiyule178.com'experimental'
  
  切换到experimental分支,切换完成后,先编辑里面的一个文件,再提交(commit)改动,最后切换回 “master”分支:
  
  # 修改文件file1
  
  $ echo "update" www.078881.cn >> file1
  
  # 查看当前状态
  
  $ git status
  
  # 添加并提交file1的修改
  
  $ git add file1
  
  $ git commit -m "update file1"
  
  # 查看file1的内容
  
  $ cat file1
  
  test
  
  update
  
  # 切换到master分支
  
  $ git checkout master
  
  查看下file1中的内容会发现刚才做的修改已经看不到了。因为刚才的修改时在experimental分支下,现在切换回了master分支,目录下的文件都是master分支上的文件了。
  
  现在可以在master分支下再作一些不同的修改:
  
  # 修改文件file2
  
  $ echo "update again" www.yongxinzaixian.cn >> file2
  
  # 查看当前状态
  
  $ git status
  
  # 添加并提交file2的修改
  
  $ git add file2
  
  $ git commit -m "update file2 on master"
  
  # 查看file2的内容
  
  $ cat file2
  
  test
  
  update again
  
  这时,两个分支就有了各自不同的修改,分支的内容都已经不同,如何将多个分支进行合并呢?
  
  可以通过下面的git merge命令来合并experimental到主线分支master:
  
  # 切换到master分支
  
  $ git checkout master
  
  # 将experimental分支合并到master
  
  $ git merge -m 'merge experimental branch'www.bomaoyule.cn experimental
  
  -m参数仍然是需要填写合并的注释信息。
  
  由于两个 branch 修改了两个不同的文件,所以合并时不会有冲突,执行上面的命令后合并就完成了。
  
  如果有冲突,比如两个分支都改了一个文件 file3,则合并时会失败。首先我们在master分支上修改file3文件并提交:
  
  # 切换到master分支
  
  $ git checkout master
  
  # 修改file3文件
  
  $ echo "master: update file3" www.fencaiyule.cn/>> file3
  
  # 提交到master分支
  
  $ git commit -a -m 'update file3 on master'
  
  然后切换到experimental,修改file3并提交:
  
  # 切换到experimental分支
  
  $ git checkout experimental
  
  # 修改file3文件
  
  $ echo "experimental:www.thqpt.com update file3"www.2018yulpt.com >> file3
  
  # 提交到experimental分支
  
  $ git commit -a -m 'update file3 on experimental'

  切换到master进行合并:
  
  $ git checkout master
  
  $ git merge experimental
  
  Auto-merging file3
  
  CONFLICT (content): Merge conflict in file3
  
  Automatic merge failed; fix conflicts and then commit the result.
  
  合并失败后先用git status查看状态,会发现file3显示为both modified,查看file3内容会发现:
  
  $ cat file3
  
  test
  
  <<<<<<< HEAD
  
  master: update file3
  
  =======
  
  experimental: update file3
  
  >>>>>>> experimental
  
  上面的内容也可以使用git diff查看,先前已经提到git diff不加参数可以显示未提交到缓存区中的修改内容。
  
  可以看到冲突的内容都被添加到了file3中,我们使用vim编辑这个文件,去掉git自动产生标志冲突的<<<<<<等符号后,根据需要只保留我们需要的内容后保存,然后使用git add file3和git commit命令来提交合并后的file3内容,这个过程是手动解决冲突的流程。
  
  # 编辑冲突文件
  
  $ vim file3
  
  # 提交修改后的文件
  
  $ git add file3
  
  $ git commit -m 'merge file3'
  
  
  当我们完成合并后,不再需要experimental时,可以使用下面的命令删除:
  
  $ git branch -d experimental
  
  1
  
  git branch -d只能删除那些已经被当前分支的合并的分支. 如果你要强制删除某个分支的话就用git branch –D
  
  如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态:
  
  $ git reset --hard HEAD^
  
  # 查看file3的内容,已经恢复到合并前的master上的文件内容
  
  $ cat file3
  
  
  还有一种需要特殊对待的情况,在前面没有提到。通常,一个合并会产生一个合并提交(commit), 把两个父分支里的每一行内容都合并进来。
  
  但是,如果当前的分支和另一个分支没有内容上的差异,就是说当前分支的每一个提交(commit)都已经存在另一个分支里了,git 就会执行一个“快速向前”(fast forward)操作;git 不创建任何新的提交(commit),只是将当前分支指向合并进来的分支。
  
  10. Git日志
  
  git log命令可以显示所有的提交(commit):
  
  git log
  
  1
  
  如果提交的历史纪录很长,回车会逐步显示,输入q可以退出。
  
  git log有很多选项,可以使用git help log查看。
  
  Git会根据git log命令的参数,按时间顺序显示相关的提交(commit)。
  
  如果用–stat 选项使用 git log’,它会显示在每个提交(commit)中哪些文件被修改了, 这些文件分别添加或删除了多少行内容,这个命令相当于打印详细的提交记录:
  
  $ git log --stat
  
  你可以按你的要求来格式化日志输出。–pretty 参数可以使用若干表现格式,如oneline:
  
  $ git log --pretty=oneline
  
  或者你也可以使用 short 格式:
  
  $ git log --pretty=short
    
  你也可用medium,full,fuller,email 或raw。 如果这些格式不完全符合你的需求, 你也可以用–pretty=format参数定义格式。
  
  –graph 选项可以可视化你的提交图(commit graph),会用ASCII字符来画出一个很漂亮的提交历史(commit history)线:
  
  $ git log --graph --pretty=oneline
  
  日志记录可以按不同的顺序来显示。如果你要指定一个特定的顺序,可以为git log命令添加顺序参数。
  
  按默认情况,提交会按逆时间顺序显示,可以指定–topo-order参数,让提交按拓扑顺序来显示(就是子提交在它们的父提交前显示):
  
  $ git log --pretty=format:'%h : %s' --topo-order --graph
  
  你也可以用 –reverse参数来逆向显示所有提交日志。
  
  11. 小结
  
  git config:配置相关信息
  
  git clone:复制仓库
  
  git init:初始化仓库
  
  git add:添加更新内容到索引中
  
  git diff:比较内容
  
  git status:获取当前项目状况
  
  git commit:提交
  
  git branch:分支相关
  
  git checkout:切换分支
  
  git merge:合并分支
  
  git reset:恢复版本
  
  git log:查看日志

猜你喜欢

转载自www.cnblogs.com/qwangxiao/p/9225617.html