Git使用
说明:
1、自行安装git
2、以下长的都是两个横杠,--
3、使用git bash来操作
初始化
//第一次要设置你的用户名还有邮箱
git config --global user.name "xxxx" //设置全局的用户名
git config --global user.email "xxxx" //设置全局的邮箱
//到你的目标目录下,运行init,将这个目录变为本地仓库
git init //将我本地创建的Repository目录初始化为git仓库
提交,add,commit
// 比如我创建一个文件来提交
test.txt // 创建一个文件
git add test.txt // 添加到本地缓冲区
git commit -m "提交说明" // 提交到当前分支,也可以说是当前仓库
git commit test.txt -m "提交说明" // 也可以指定文件提交
git status // 查看本地缓冲区是否还有可提交内容
-----------------------------------------------
//提交之后,其实只是提交到你的本地了
//还要将本地的内容推送到远程仓库
//提交之前要先关联一个地址,让git知道这些内容要提交到哪里
git remote add origin https://gitee.com/xxxx.git
git push -u origin master // 第一次推送时
git push origin master // 第一次推送后,直接使用该命令即可推送修改
-----------------------------------------------
// 提交文件夹,在add后面加点
git add . // 当前文件夹所有文件提交
-----------------------------------------------
// 缓冲区多个文件提交
git add test.txt
git add test2.txt
git status
// 输出
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: test.txt
new file: test2.txt
git commit -m "test,test2,commit"
// 输出
[master cc4ca3d] test,test2,commit
2 files changed, 4 insertions(+), 1 deletion(-)
create mode 100644 test2.txt
git status
// 输出
On branch master
nothing to commit, working tree clean
对比,diff
git diff test.txt //新旧文件对比
// 输出
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory.
diff --git a/test.txt b/test.txt
index 7b82b07..b6fb462 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
-test1`
+test1
+test2`
查看记录,log
git log // 查看所有提交记录
git log . // 查看当前文件夹的所有提交记录
// 输出
Author: xxxx <xxxx.com>
Date: Mon Aug 7 20:57:40 2019 +0800
test2 commit
-----------------------------------------------
git reflog // 不限于提交记录,查看所有操作记录
// 输出
b9dde83 (HEAD -> master) HEAD@{0}: commit: test2 commit
55b6f75 HEAD@{1}: commit (initial): test1 commit
-----------------------------------------------
$ git log --pretty=oneline // 将log信息变为一行,比较简洁好看
// 输出
b9dde83a99ed47ff1dc623a3f53441eca4e4fbff (HEAD -> master) test2 commit
55b6f75177f488480d7494d74b7e52a858972e54 test1 commit
回退,reset
// ^代表回退到上一次提交的内容,^^表示回退上上一次,如此类推
git reset --hard HEAD^
// 输出
HEAD is now at 55b6f75 test1 commit
-----------------------------------------------
// 回退到指定版本
git reset --hard 版本号(在git log 中查看,最长的那段内容)
例如:
git reset --hard b9dde83a99ed47ff1dc623a3f53441eca4e4fbff
撤销动作,checkout
// 在test.txt中添加了内容
cat test.txt
test5
test6
// 还没add到缓冲区,直接checkout
git checkout -- test.txt // 杠杠的后面要加空格
// 刚才添加的内容没有了,相当于返回了上一个提交的版本
cat test.txt
test5
// 已经add到缓冲区内容就没办法了
提交了的文件要怎么删除
// 直接删除文件
rm test2.txt
// 通过查看缓冲区状态可以看到提示test2.txt被deleted
git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: test2.txt
// 提交这个缓冲区的状态,即提交test2.txt被deleted的消息
git commit test2.txt -m "delete test2"
[master dc8b989] delete test2
1 file changed, 1 deletion(-)
delete mode 100644 test2.txt
// 再查看的时候,已经木有了,版本库的也被删除了
git status
On branch master
nothing to commit, working tree clean
// 如果是误删,还没commit,可以checkout回来
git checkout -- test2.txt
如何断开远程并重连
// 已经连接了一个别的仓库
$ git remote add origin https://github.com/xxxx.git
fatal: remote origin already exists.
// 断开远程
$ git remote rm origin
// 重连
$ git remote add origin https://github.com/xxxx.git