win7下git使用(win10也可)
1.在github上创建账号,安装git:
$ git config --global user.name "Name"
$ git config --global user.email "Email"
2.在本地创建仓库及文件:
创建forgit文件夹:
$ mkdir forgit
$ cd forgit
初始化仓库:
$ git init
创建文件142.txt:
$ md.>142.txt
编辑142.txt文件:
$ vim 142.txt
编辑结束后,按esc键+大写Z两次,退出
3.将文件放入本地仓库,提交:
三种全部加入到本地仓库的方式:
$git add *
$git add .
$git add all
选择指定文件加入本地仓库(以142.txt文件为例):
$git add 142.txt
查看当前工作区:(刚刚加入仓库的文件,还停留在工作区,未提交)
$git status
将文件提交到本地仓库:
$git commmit 142.txt -m '142'
$git commmit * -m '142'
传入本地仓库时,会要求写入说明
踩的坑:中途误删内容,手动关闭后,再次使用,提示Another git process seems to be running in this…仓库被另一个commit进程占用
原因在于Git在使用过程中遭遇了奔溃,部分被上锁资源没有被释放导致的。
解决方案:进入项目文件夹下的 .git文件中(显示隐藏文件夹或rm .git/index.lock)删除index.lock文件即可。
使用git commit提交代码的时候,如果没有写-m属性,(提交注释),是无法完成提交的。如果命令中没有-m,只用git commit,会进入COMMIT_EDITMSG编辑。所以,提交的时候要带上-m属性。ESC --> 退出编辑状态;接着,连续按两次大写字母键Z
另外如果忘记使用-m,进入vim编辑器,不知道怎么退出的话,看下方的提示^X(退出)是指Ctrl + X,退出后再一次提交,记得加上-m ‘注释’
另:在win7下可以使用命令行合并:
$git add . && git commit –m”142.txt”
查看传入日志:(有修改记录)
$git log
$git log –oneline // 在一行中查看
$git log --online --all
$git log --all --graph // 图示全部历史记录(以符号的形式)
4.关于git的分支
创建123.txt文件:
$ cd.>123.txt // 创建
新建分支1234:
$git branch 1234
将head指向1234:(切换到分支1234)
$git checkout 1234
创建并切换至分支:
$git checkout –b 分支名
删除123.txt文件:
$ rm 123.txt // 删除
查看目前的目录:
$dir
编辑错误回到之前的分支(master):
$git checkout master
之前的删除的123.txt文件会再一次出现
每一次的commit会有唯一的版本号,一长串(可以简略用前几位)
查看版本号:
$ git log
记下要回到的版本号的前几位:
commit 932e5cc2bb620b2960fe8e7ff90117af568a500b (HEAD -> master)
Author: xxxxxxxxxxxxxxxxxxx
Date: Mon Jun 29 08:45:44 2020 +0800
142
切换回版本号的地方:
$ git checkout 932e
HEAD is now at 932e5cc 142
踩的坑:git bash无法复制和粘贴
1.顶部右键设置属性—快速选择
2.ctrl+insert 复制
Shift+insert 粘贴
3.在bash.exe外面ctrl+c后,进入bash.exe,鼠标右键点击实现粘贴
5.进行标签化
给当前状态打上标签:
$git tag v1.0
$git tag –a 标签名 –m “备注” (a是指annotated有注释的) 没有标签名的话,无法对标签进行进一步描述
$git tag 列出所有标签
在历史节点上打标签:
$git tag –a v0.5 –m ‘0.5操作’cfb57d19fa666314ef4f04af9a444c16a329936e
查看某个标签的详细信息:
$git show 标签名(mod1.0)
可以用版本号切换回分支:
$git checkout v1.0 // 回到分支master,v1.0是master分支的标签
合并分支:
以当前所在分支为支点,合并别的分支
$git merge 分支名 合并分支
当需要合并的两个分支存在版本冲突时,会出现冲突报错,在出现冲突的文件中会显示冲突的内容
冲突内容被=====隔开,自行动手解决
上下两部分即两个版本的冲突内容,需要自行动手解决
合并后添加进入工作区,并提交至仓库:
$git add .
$git commit –m ‘合并’
6.提交至远程仓库:
如果仅仅将版本存储在本地会有一定的风险,保存一份在远程仓库上,本地出现问题,可以将远程上的数据拷贝到另一台计算机上
在github上创建新的仓库:test
$git remote add 远程名称 远程地址 添加远程仓库
$ git remote add origin https://github.com/once/test.git
强行推送当前分支到远程仓库:
$ git push -u origin master
显示所有远程仓库:
$ git remote -v
origin https://github.com/once/test.git (fetch) // 拉取代码下来
origin https://github.com/once/test.git (push) // 传送代码上去
$git push –u 远程名(可以远程仓库名github) 分支名(master) 上传代码
$ git add . && git commit -m '22' // 添加到本地工作区
$ git push -u origin master // 提交到远程仓库分支
当本地内容全部消失时,去远程仓库获取:
$git clone 仓库地址 克隆(拷贝)仓库 进行拉取
$git clone https://github.com/once/test.git
$cd test
$git log
$git remote // origin
$git remote –v
$md.>124.txt
$ git add . && git commit -m '124'
$git push –u origin master
7.git多人合作:
Github仓库上 --> settings --> 最下面(danger zone)–> 删除仓库(delete this repository)–> 重复一下仓库名就可以删除
重新新建仓库,将仓库地址clone到本地,可以指定目录
$git clone https://github.com/once/test.git // www (此时目录为www)
$git clone https://github.com/once/test.git // lll(此时目录为lll)
此时本地的目录下就存在两个文件夹whh和lsd
获取远程更新:
$git pull
后更新的人,会遇见git推送push报错,需要先拉取pull:
$git pull
和之前描述的一样,文件会自动进行合并,并出现冲突的内容,手动修改后,再进行添加到工作区及远程仓库推送
$git add . && git commit -m '4'
$git push –u origin master
git pull是git fetch和git merge的结合,
$git pull
$git fetch && git merge
$git fetch [remote] // 下载远程仓库的所有变动
获取远程仓库指定文件:
$ git checkout origin/master -- 142.txt
$git checkout origin/master -- path/folder/filename
提交文件到远程仓库:
先将指定文件添加到 暂存区,然后提交所有暂存区的文件
$git add . && git commit -m '4'
$git push –u origin master
8.git删除本地分支:
先切换到其他分支(非要删除的分支):
$git checkout dev20180927
$git branch -d dev20181018
如果遇到无法删除的情况可以进行强行删除:
$git branch -D dev20181018
删除远程分支:
$git push origin --delete dev20181018
9.git命令合并分支:
有分支v1和分支v2,现在我们需要将v2合并到v1上
首先切换到v1:
$git checkout v1
$git merge v2
10.上传远程分支时容易出错,根据提示,输入命令:
$git push --set-upstream origin release/V3.5.4/test
11.git本地分支和远程分支关联:
如果远程新建了一个分支,本地没有该分支
$git checkout --track origin/branch_name
这时本地会新建一个分支名叫 branch_name ,会自动跟踪远程的同名分支 branch_name
12.git回滚到指定版本:
$git reset --hard 指定版本号
$git reset --hard dc6beb9335
13.git原意更新远程分支,结果却是删除原有分支,重建新的分支:
$git push origin A:B
$git push origin A :B
原因:在命令中多了一个空格
参考网址:https://blog.csdn.net/worn_xiao/article/details/79233983
参考网址
14.git强制提交本地分支覆盖远程分支:
$git push origin 分支名 --force
eg:
cd 代码目录
$git push origin master --force