Git拉取代吗配置以及常见命令

一 Git介绍

Git是一个开源的分布式版本控制系统,是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

工作区:就是你在电脑里能看到的目录。

暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H6ctTQUj-1576815822428)(file:///gitpic\wps134A.tmp.png)]

二 本地仓库

1 基本使用

1)安装git

如果是ubuntu系统,采用如下命令:sudo apt-get install git

如果是Windows系统, 直接安装相关的git程序

2)配置用户和邮箱

git config --global user.name "renr"
git config --global user.email "123444@aliyun.com"

3)创建本地仓库的文件夹

mkdir git_repository

4)初始化仓库,切换到仓库文件夹

cd git_repository(Git905)
git init

初始化空仓库后,会生成一个.git目录

5)添加文件到仓库

新建一个hello.txt,然后
git add hello.txt  添加到暂存区
git commit -m “new”  提交更改
git checkout -- haha.txt   撤销修改  
git reset HEAD haha.txt  添加过进行撤销操作

其中,git add把文件添加进去,实际上就是把文件修改添加到暂存区;

用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改

注意:如果是在仓库外建立文件,并添加,会提示错误

renr@renr-virtual-machine:~$ git add haha.txt
fatal: Not a git repository (or any of the parent directories): .git
或者
renr@renr-virtual-machine:~/git_repository$ git add ../haha.txt
fatal: ../haha.txt:'../haha.txt' 在仓库之外

2 其他命令

1)git status

对文件进行修改,通过git status查看状态

renr@renr-virtual-machine:~/git_repository$  vim haha.txt 
renr@renr-virtual-machine:~/git_repository$ git status
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
 

	修改:     haha.txt
 

修改尚未加入提交(使用 "git add" 和/或 "git commit -a"

2)git diff

对比查看修改什么内容

renr@renr-virtual-machine:~/git_repository$  git diff haha.txt
diff --git a/haha.txt b/haha.txt
index 1d39138..c4c87d9 100644
--- a/haha.txt
+++ b/haha.txt
@@ -1,3 +1,6 @@

 
 hello
 world
+
+buhao
+caiguai

3) git log

查看修改的历史记录

git log

4)git reset

回退到上一个版本

git reset --hard HEAD^  

如果是windows系统,^有特殊意思,该命令需要写为:

git reset --hard “HEAD^”

还可以使用:

git reset --hard HEAD~ 或者 git reset --hard HEAD~1 

​ ~ 后面的数字表示回退几次提交,默认是一次

根据版本号到一个版本

renr@renr-virtual-machine:~/git_repository$ git reset --hard b1aeb21

HEAD 现在位于 b1aeb21 insert info

使用该方式,可以实现前进到一个指定版本

5)git reflog

查看执行的每次的命令

renr@renr-virtual-machine:~/git_repository$ git reflog
b1aeb21 HEAD@{0}: reset: moving to b1aeb21
a35e20d HEAD@{1}: reset: moving to HEAD^
b1aeb21 HEAD@{2}: commit: insert info
a35e20d HEAD@{3}: commit (initial): write haha.txt

6)如何丢弃修改

修改,但是还没add时,使用status可以查看到如何丢弃

renr@renr-virtual-machine:~/git_repository$ vim haha.txt 
renr@renr-virtual-machine:~/git_repository$ git status
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
 

	修改:     haha.txt
 

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

renr@renr-virtual-machine:~/git_repository$ git checkout -- haha.txt

修改后,add后,提交到暂存区,如果取消修改,使用reset

renr@renr-virtual-machine:~/git_repository$ vim haha.txt 
renr@renr-virtual-machine:~/git_repository$ git add haha.txt 
renr@renr-virtual-machine:~/git_repository$ git status
位于分支 master
要提交的变更:
  (使用 "git reset HEAD <文件>..." 以取消暂存)

 
	修改:     haha.txt

 
renr@renr-virtual-machine:~/git_repository$ git reset HEAD haha.txt

三 连接远程github中的仓库

1 建远程仓库

在github上建立仓库,默认会生成一个readme文件

注意看Readme文件中的提示

2 使用https连接

设置远程仓库地址

renr@renr-virtual-machine:~/git_repo$ git remote add origin https://github.com/renr1981/git_repo.git

注意:使用该连接方式,每次推送时,会要求输入github的用户名和密码

向远程库推送数据

renr@renr-virtual-machine:~/git_repository$ git push -u origin master

Username for 'https://github.com': renr_1981@aliyun.com
Password for 'https://renr_1981@aliyun.com@github.com': 
对象计数中: 17, 完成.
压缩对象中: 100% (9/9), 完成.
写入对象中: 100% (17/17), 1.37 KiB | 0 bytes/s, 完成.
Total 17 (delta 0), reused 0 (delta 0)
To https://github.com/renr1981/git_repo.git
 * [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

3 使用ssh(Secure Shell)连接

1) 在家目录下创建ssh key(会生成公钥和私钥文件),邮箱使用github账户

注意:如果使用ssh连接,需要进行该配置

renr@renr-virtual-machine:~$ ssh-keygen -t rsa -C "renr_1981@aliyun.com"

Generating public/private rsa key pair.
Enter file in which to save the key (/home/renr/.ssh/id_rsa): 
Created directory '/home/renr/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/renr/.ssh/id_rsa.
Your public key has been saved in /home/renr/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:QzyEYlYWzJNweoBZSxGxWGksHxn0fhFTNC8LYB1bKRQ renr_1981@aliyun.com
The key's randomart image is:
+---[RSA 2048]----+
|   %%BE==.     |
|  ++XX*+o=.o     |
|  .*+oo.B.. .    |
|    .o . + o     |
|      . S .      |
|       . .       |
|                 |
|                 |
|                 |
+----[SHA256]-----+

2) Github中设置key,key的内容来自.ssh/id_rsa.pub

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fijQcYqa-1576815822430)(file:///gitpic\wps13E7.tmp.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TIzpvgTJ-1576815822431)(file:///gitpic\wps1446.tmp.jpg)]

3) 本地库与远程库关联

renr@renr-virtual-machine:~/git_repo$ git remote add origin git@github.com:renr1981/git_repo.git

4 推送本地更新

第一次推送时:

git push -u origin master

-u参数,把本地的master分支内容推送的远程新的master分支,并把本地的master分支和远程的master分支关联起来

关联后,只要本地修改并提交,就可以通过如下命令进行吐送

git push origin master

有时可能会产生冲突,就可以进行强制推送

git push -f origin master    -f表示强制推送

5 修改远程仓库地址

方法一:

git remote rm origin 
git remote add origin git@github.com:XXX/XXX.git

方法二:

git remote origin set-url <URL> 

把替换成新的url地址。

方法三:

直接修改.git/config文件

四 克隆远程库

1先在远程建立库

2 远程库克隆:git clone

renr@renr-virtual-machine:~$ git clone https://github.com/renr1981/new_repo.git
正克隆到 'new_repo'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (3/3), 完成.
检查连接... 完成。


3将远程库更新同步到本地

1)git pull origin master,该命令会自动合并有冲突的文件

renr@renr-virtual-machine:~/new_repo$ git pull

git pull origin master

remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (3/3), 完成.
来自 github.com:renr1981/new_repo
   17c2e44..2fac4c0  master     -> origin/master
更新 17c2e44..2fac4c0
Fast-forward
 nihao.txt | 1 +
 1 file changed, 1 insertion(+)


2)git fetch origin master,不会自动合并

使用该命令的流程一般是:

git fetch origin master 从远程的origin仓库的master分支下载代码
git log -p master.. origin/master 比较本地的仓库和远程参考的区别
git merge origin/master 把远程下载下来的代码合并到本地仓库,远程的和本地的合并

五 其他

1 分支相关命令

创建分支:git branch 分支名称

切换分支:git checkout 分支名称

创建并切换分支:git checkout -b 分支名称

查看分支:git branch

合并分支到当前分支:git merge 分支名称

删除分支:git branch -d 分支名称

2解决冲突

出现冲突的情况:

​ A和B修改相同的代码,A修改后,提交,B修改还没有提交,然后B直接通过update获取最新代码;

​ A和B修改相同的代码,A修改后直接提交,B修改后也直接提交

针对出现冲突情况,一般比较稳妥的方式是手动修改代码解决冲突后重新提交

如果文件有冲突,提示信息如下:

renr@renr-virtual-machine:~/new_repo$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (3/3), 完成.
来自 github.com:renr1981/new_repo
   2fac4c0..1f18632  master     -> origin/master
自动合并 nihao.txt
冲突(内容):合并冲突于 nihao.txt
自动合并失败,修正冲突然后提交修正的结果。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值