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

以下使用的是 Git-2.18.0-64-bit.exe 客户端,以下经过了试验,所有带$的是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

本地自建一个仓库

# 在没有远程仓库的情况下使用
## 新建一个目录作为工作目录
$ mkdir demo
$ cd demo
## 在本地初始化git仓库
$ git init

#这时,我们已经创建了一个本地仓库,但是,一般我们和其他人共同开发一个项目,则需要添加一个远程仓库。现在假设我已经才github上面建立了一个叫demo的空仓库,现在需要将其添加到本地仓库。
## 添加一个叫origin的远程仓库
$ git remote add origin https://github.com/xxxx/xxxx.git
## 添加个README吧
$ vim README.md
$ git add README.md
$ git commit -m "first commit with README"
## 推送到远程仓库,同时也可以push其他新增的文件到远程了
$ git push -u origin master

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'.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值