鬼谷子算女命

Git 基本使用及工作流程详解

一、Git 用户信息配置

# 设置全局用户名和邮箱

$ git config --global user.name "xxx"

$ git config --global user.email "xxx@xxx.com"

 

 

二、从远程仓库获取目录

# 在已经有远程仓库的情况下使用,比如新入职一家公司

## 进入一个文件夹,用于放置clone下来的代码

$ cd test

## 把远程仓库代码clone下来

$ git clone https://github.com/xxxx/xxxx.git

$ cd git_demo

##查看状态

$ git status

## 默认远程仓库名为origin

On branch master

Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean

 

 

三、修改和增加代码并推送

## 添加所有修改的文件,也可以git add xx.txt 指定某个文件

$ git add .

## 提交修改

$ git commit -m "update"

## 推送到远程仓库

$ git push

 

 

四、分支

# 一般情况下,当我们需要添加一个新功能的时候,是不能在主分支上直接修改的,这时,需要创建一个新的分支,等功能开发并测试完成之后,再合并到主分支。

#假设我们需要新建一个临时分支test来处理一个问题。

## 新建一个test分支

$ git branch test

## 切换到test分支

$ git checkout test

Switched to branch 'test'

## 查看分支,当前已经在test分支上面

$ git branch

* test

  master

## 在当前分支上进行一些修改,把内容‘123123’添加到hello.txt文件中

$ echo "123123" >> hello.txt

## 添加并提交修改到本地

$ git add hello.txt

$ git commit -m "add hello.txt"

## 推送到远程,因为现在远程还没有test分支,所以需要set-upstream

## 这样,在远程仓库就有了test分支,之后可以直接push

$ git push --set-upstream origin test



## test解决后,把修改合并会master,并删除test分支

## 切换到主分支

$ git checkout master

Switched to branch 'master'

Your branch is up to date with 'origin/master'.



## 把test分支的内容合并到主分支master

$ git merge test

Updating 2d0f8f9..bc9a5ca

Fast-forward

 qwe | 1 +

 1 file changed, 1 insertion(+)

 create mode 100644 qwe



##删除分支test

$ git branch -d test

Deleted branch wy (was bc9a5ca).



## push

$ git push

Total 0 (delta 0), reused 0 (delta 0)

To https://github.com/xxxx/xxxx.git

   2d0f8f9..bc9a5ca  master -> master



## 删除远程分支

$ git push origin :test

To https://github.com/xxxx/xxxx.git

 - [deleted]         test

 

五、本地自建一个仓库

 

 

六、pull他人提交的代码

#在我们完成了某项功能的修改,需要push的远程的时候,协作者可能已经提交了他们的修改,这时,我们需要先把最新的提交拉取下来,加入我们的修改,再重新提交上去。

 

$ git push

## push被驳回了,因为有其他人已经提交了更新

 ! [rejected]        master -> master (fetch first)

error: failed to push some refs to 'https://github.com/xxxx/xxxx.git'

hint: Updates were rejected because the remote contains work that you do

hint: not have locally. This is usually caused by another repository pushing

hint: to the same ref. You may want to first integrate the remote changes

hint: (e.g., 'git pull ...') before pushing again.

hint: See the 'Note about fast-forwards' in 'git push --help' for details.

 

## 拉取远程提交内容并合并到当前工作区

$ git pull

## 重新push到远程

$ git push

 

七、冲突处理

#当拉取别人提交的代码时,很可能不同开发者修改了同一个文件的同一部分,这时候,就会出现冲突,我们需要手动解决这些冲突,再重新提交上去。



$ git pull

remote: Counting objects: 5, done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 5 (delta 2), reused 5 (delta 2), pack-reused 0

Unpacking objects: 100% (5/5), done.

From github.com/xxxx/xxxx.git

   7d4f14a..e2e17d3  master     -> origin/master

## 尝试自动合并file1

Auto-merging file1

## 发现冲突,需要手动解决冲突

CONFLICT (content): Merge conflict in file1

Automatic merge failed; fix conflicts and then commit the result.



## 此时,git已经把可能冲突的地方都写进了文件

$ vim file1

## 可以看见冲突的地方

<<<<<<< HEAD

file1 + add 1

=======

file1 + del 4

>>>>>>> e2e17d311ec33700e94ce5dd694aa340920deb7c



## vim里手动解决冲突后,add进来

$ git add file1

$ git commit -m "resolve confict in file1"

## 推送到远程分支

$ git push

 

八、本地分支与远程分支关联

# 在远程已有master和dev分支的情况下,如果想在本地提交一个文件到远程的dev分支,可以进行以下操作

# 当前本地只有一个分支

$ git branch

* master



# 创建本地分支dev并直接切换

$ git checkout -b dev

Switched to a new branch 'dev'



# 本地分支与远程分支相关联

$ git pull origin dev

From https://git.coding.net/wylycool/database

 * branch            dev        -> FETCH_HEAD

Already up to date.



# 这时开始提交文件

$ git add .

$ git commit -m '123'

[dev fe41cad] 123

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 123.txt



#进行到这儿, 以下两个任选一个

# 其一,本地dev可以不同步到远程dev,直接切换到主分支后merge dev,使用master同步远程代码

$ git checkout master

Switched to branch 'master'

Your branch is up to date with 'origin/master'.

$ git merge dev

$ git push



# 其二,可以把本地dev和远程dev关联起来,同步远程dev代码,此时远程dev有了新提交的文件,然后再换到master合并

$ git push --set-upstream origin dev

Enumerating objects: 3, done.

Counting objects: 100% (3/3), done.

Delta compression using up to 2 threads.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (2/2), 243 bytes | 121.00 KiB/s, done.

Total 2 (delta 1), reused 0 (delta 0)

To https://git.coding.net/wylycool/database.git

   87392f6..fe41cad  dev -> dev

Branch 'dev' set up to track remote branch 'dev' from 'origin'.

 

posted on 2019-10-22 10:57  鬼谷子算女命  阅读(227)  评论(0编辑  收藏  举报

导航