Git入门及其workflow

Git的基本使用方法:

PART1  Basic

1  >> git init

用来初始化。创建一个git仓库来管理文件。注意这个命令可以在不同文件夹下创建,但是在子文件或者父文件下提交的规则会有所不同。

在父文件中提交commit之前要在子文件提交commit

 

2  >> git statusus

用来查看当前状态,就像linux里面用>> ls 一样

 

3  >> git add

用来添加文件,添加单个文件就是

>> git add <filename>

当然也可以添加多个文件,只需要这些文件之间用空格隔开就可以了。

>> git add <filename1> <filename2>

用来添加所有改变的文件就用

>> git add .

 

4  >> git diff

首先要用>> git add 追踪了某个文件,然后再用git diff可以显示出不同的地方。

还可以用

>> git diff <file1> <file2>

来进行对比,其中file可以是origin, master, branch.

也可以是两个commit的哈希。

 

5  >> git commit

在添加文件后用来提交,注意这里提交后相当于改变了本地的存储。和提交到远程仓库比如github是不一样的。

一般的用法是

>> git commit -m “comment here” 

 

6  >> git log

最后是用git log查看自己提交的一些详情,而且还会显示每次提交的一个哈希值,通过这个值可以进行回退。

 

7  >> git show HEAD

HEAD commit一般来说是最近一次提交的commit,通过这条命令可以显示最近一次提交。

 

8  >> git checkout HEAD <filename>

Checkout结合HEAD(HEAD是最近一次提交)很有用,比如在一次迭代测试中,感觉自己哪里错了或者删除错了哪次文件,就可以回退到上一次的状态。当然,我们更喜欢回退到某一个具体的状态,这样就需要将HEAD变为具体一次commit的哈希的前六位。注意恢复某一次的文件并不会把那一次commit没有的文件删掉,但是会恢复那一次commit中存在的文件。

注意这里<filename>可以用  . 来代替,这样就可以恢复那一次的所有文件。

 

 

PART2 Teamwork

>> git clone <remote_location> <clone_name>

<remote_location>可以是github给出的web网址,也可以是一个文件的路径。也就是说可以在本地操作git复制项目。

 

下载指定分支

详情见此处git -b 下载指定分支

>> git remote -v

这也是展示信息,显示远程服务器的信息。这里的v是指verbose,详细版本的意思。

注意这要在clone了来自远程服务器或者某个路径的时候用

 

>> git fetch

这也是在有remote信息下进行,这个操作会把远程服务器更新的文件取到本地,但是不会马上改变本地文件,而是会在一个origin/master的branch。注意当git status提示你behind origin/master就说明远程服务器有更新。

 

如果再fetch完之后,想要把本地的文件替换成远程服务器更新后的内容,就需要用到merge了。

>> git merge origin/master

意思就是把origin/master这个branch融合到主branch中。

注意在merge后不可回退了,整个git log就变成了远程服务器的git log了。

 

git merge失败的解决方法

如果本地有修改,想要fetch远程服务器的代码时,可能会报错

error: Your local changes to the following files would be overwritten by merge:

这时候有两种解决方法:

一种是保留本地代码的同时并且把远程服务器的代码merge到本地

>> git stash

>> git merge origin/master

>> git stash pop

 

>> git pull

用pull相当于把fetch和merge简化成了一步,具体 

的pull可以参照这篇文章: https://www.jianshu.com/p/55b6720264ee

 

pull远程指定分支

参考这篇文章 :https://www.cnblogs.com/phpper/p/7136048.html

git pull和git fetch的区别看这里

 

简单来说就是

git pull origin <remote_branch>:<local_branch>
git pull origin <remote_branch>

 

第二种方法是完全覆盖,也可以先branch出一个副本,再让远程服务器的文件完全覆盖

完全覆盖使用

>> git reset --hard

>> git merge origin/master

 

取消git add状态的文件

>> git reset HEAD {filename}

----

 

>> git branch <branch_name>

显示branch,知道了不同branch的名字,可以用

>> git checkout <branch_name><branch_name>

来切换branch,切换不同branch提交之后,再切换会master会改变文件夹的内容。

注意如果不提交commit,再切换回master可能会出现错误。所以一次只操作一次,如果修改了branch,记得一定要提交。

 

>> git push <origin> <your_branch_name>

把你创建的分支融合到远程地址(origin)。注意如果你把你的master而不是分支push上去,在github中,如果你是账号的使用者,会直接修改master。也就是是说除非你是那个账号的使用者,否则你是不能直接修改master的。

 

push删除远程分支,见这里push删除远程分支

Git workflow

Now that you've merged  origin/master  into your local  master  branch, you're ready to contribute some work of your own. The workflow for Git collaborations typically follows this order:

 

  1. Fetch and merge changes from the remote
  2. Create a branch to work on a new project feature
  3. Develop the feature on your branch and commit your work
  4. Fetch and merge from the remote again (in case new commits were made while you were working)
  5. Push your branch up to the remote for review

 

Steps 1 and 4 are a safeguard against merge conflicts, which occur when two branches contain file changes that cannot be merged with the git merge command. Step 5 involves git push, a command you will learn in the next exercise

 

Tips

注意git里面的origin是fetch取过来的,是可以离线存在的。

意思是说离线状态可以使用

>> git diff master origin

或者说git status提示超前或落后的origin离线保存下来的。

 

git中要修改代码,最好不要修改master的代码,而是应该创建分支,然后修改分支 

里面的代码。

 

 

 

git回撤

 

当我 修改了没有add,想要回到之前的状态,则使用

> git reset --hard {之前的哈希}

 参考 https://zhidao.baidu.com/question/1047433320341166179.html

 

git reset 文件名 即可撤销git的add操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值