git学习1. 创建仓库并提交初始化全局配置git config --global user.name "Your name" git config --global user.email "email@example.com" 创建版本库root@kali:~/Documents# mkdir test root@kali:~/Documents# cd test/ root@kali:~/Documents/test# git init Initialized empty Git repository in /root/Documents/test/.git/ root@kali:~/Documents/test# ls -la total 12 drwxr-xr-x 3 root root 4096 Jul 13 10:40 . drwxr-xr-x 4 root root 4096 Jul 13 10:40 .. drwxr-xr-x 7 root root 4096 Jul 13 10:40 .git root@kali:~/Documents/test#
把文件添加到版本库root@kali:~/Documents/test# echo "this is first commit" >> README.md root@kali:~/Documents/test# git add README.md root@kali:~/Documents/test# git commit -m "first commit" [master (root-commit) 5399ca6] first commit Committer: root <root@localhost.localdomain> Your name and email address were configured automatically based on your username and hostname. Please check that they are accurate. You can suppress this message by setting them explicitly. Run the following command and follow the instructions in your editor to edit your configuration file: git config --global --edit After doing this, you may fix the identity used for this commit with: git commit --amend --reset-author 1 file changed, 1 insertion(+) create mode 100644 README.md root@kali:~/Documents/test#
查看改变root@kali:~/Documents/test# echo "second commot" >> README.md root@kali:~/Documents/test# git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: README.md no changes added to commit (use "git add" and/or "git commit -a") root@kali:~/Documents/test#
查看具体修改内容root@kali:~/Documents/test# git diff README.md diff --git a/README.md b/README.md index 2ed441a..b8254f4 100644 --- a/README.md +++ b/README.md @@ -1 +1,2 @@ this is first commit +second commot root@kali:~/Documents/test#
再次提交到仓库root@kali:~/Documents/test# git add README.md
git commit提交root@kali:~/Documents/test# git commit -m "add second" [master 22bae0c] add second Committer: root <root@localhost.localdomain> Your name and email address were configured automatically based on your username and hostname. Please check that they are accurate. You can suppress this message by setting them explicitly. Run the following command and follow the instructions in your editor to edit your configuration file: git config --global --edit After doing this, you may fix the identity used for this commit with: git commit --amend --reset-author 1 file changed, 1 insertion(+) 查看当前状态root@kali:~/Documents/test# git status On branch master nothing to commit, working tree clean root@kali:~/Documents/test#
2. 版本回退查看历史版本root@kali:~/Documents/test# git log commit 5ccca74437dd2943368adbd7b46776e45e87e76d (HEAD -> master) Author: root <root@localhost.localdomain> Date: Fri Jul 13 11:03:42 2018 -0400 add third commit 22bae0cda96e33739fcf0a7e7b2a459130784839 Author: root <root@localhost.localdomain> Date: Fri Jul 13 10:59:07 2018 -0400 add second commit 5399ca651eeb6c295332cd117be0ed5d72c4dfa8 Author: root <root@localhost.localdomain> Date: Fri Jul 13 10:50:11 2018 -0400 first commit root@kali:~/Documents/test# root@kali:~/Documents/test# git log --pretty=oneline # 单行输出,美观直观 5ccca74437dd2943368adbd7b46776e45e87e76d (HEAD -> master) add third 22bae0cda96e33739fcf0a7e7b2a459130784839 add second 5399ca651eeb6c295332cd117be0ed5d72c4dfa8 first commit root@kali:~/Documents/test#
回滚到上一版本
root@kali:~/Documents/test# git reset --hard HEAD^ HEAD is now at 22bae0c add second root@kali:~/Documents/test# cat README.md this is first commit second commot root@kali:~/Documents/test# git log commit 22bae0cda96e33739fcf0a7e7b2a459130784839 (HEAD -> master) Author: root <root@localhost.localdomain> Date: Fri Jul 13 10:59:07 2018 -0400 add second commit 5399ca651eeb6c295332cd117be0ed5d72c4dfa8 Author: root <root@localhost.localdomain> Date: Fri Jul 13 10:50:11 2018 -0400 first commit root@kali:~/Documents/test# 返回原版本root@kali:~/Documents/test# git reflog # git命令历史纪录,可以找到commit id 5ccca74 (HEAD -> master) HEAD@{0}: reset: moving to 5ccca 22bae0c HEAD@{1}: reset: moving to HEAD^ 5ccca74 (HEAD -> master) HEAD@{2}: commit: add third 22bae0c HEAD@{3}: commit: add second 5399ca6 HEAD@{4}: commit (initial): first commit root@kali:~/Documents/test# git reset --hard 5ccca HEAD is now at 5ccca74 add third root@kali:~/Documents/test# cat README.md this is first commit second commot third commit root@kali:~/Documents/test# 3. 工作区和缓存区本地文件夹就是工作区,.git目录就是版本库, git add命令实际上是把修改放到缓存区,然后git commit会将缓存区的所有修改一次性提交到分支。 4. 管理修改修改后add, 然后再修改,然后直接commit, 这时第二次修改并不会被提交 5. 撤销修改root@kali:~/Documents/test# echo "Error" >> README.md root@kali:~/Documents/test# cat README.md this is first commit second commot third commit Error root@kali:~/Documents/test# git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: README.md no changes added to commit (use "git add" and/or "git commit -a") root@kali:~/Documents/test# git checkout -- README.md root@kali:~/Documents/test# cat README.md this is first commit second commot third commit root@kali:~/Documents/test# git status On branch master nothing to commit, working tree clean root@kali:~/Documents/test#
root@kali:~/Documents/test# echo "Error" >> README.md root@kali:~/Documents/test# git add README.md root@kali:~/Documents/test# git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: README.md root@kali:~/Documents/test# git reset HEAD README.md Unstaged changes after reset: MREADME.md root@kali:~/Documents/test# git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: README.md no changes added to commit (use "git add" and/or "git commit -a") root@kali:~/Documents/test# git checkout -- README.md root@kali:~/Documents/test# cat README.md this is first commit second commot third commit root@kali:~/Documents/test#
6. 删除文件真删除root@kali:~/Documents/test# touch test.txt root@kali:~/Documents/test# git add test.txt root@kali:~/Documents/test# git commot -m "add test.txt" git: 'commot' is not a git command. See 'git --help'. The most similar command is commit root@kali:~/Documents/test# root@kali:~/Documents/test# rm test.txt root@kali:~/Documents/test# git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: test.txt 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: test.txt root@kali:~/Documents/test# git rm test.txt rm 'test.txt' root@kali:~/Documents/test# git commit -m "remove test.txt" On branch master nothing to commit, working tree clean root@kali:~/Documents/test#
误删root@kali:~/Documents/test# touch test.md root@kali:~/Documents/test# git add test.md root@kali:~/Documents/test# git commit -m "add test.md" [master a62fe29] add test.md Committer: root <root@localhost.localdomain> Your name and email address were configured automatically based on your username and hostname. Please check that they are accurate. You can suppress this message by setting them explicitly. Run the following command and follow the instructions in your editor to edit your configuration file: git config --global --edit After doing this, you may fix the identity used for this commit with: git commit --amend --reset-author 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.md root@kali:~/Documents/test# root@kali:~/Documents/test# rm test.md root@kali:~/Documents/test# 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: test.md no changes added to commit (use "git add" and/or "git commit -a") root@kali:~/Documents/test# git checkout -- test.md root@kali:~/Documents/test# ls README.md test.md root@kali:~/Documents/test#
7. 添加远程仓库可以把本地已有的仓库和github库关联 git remote add origin https://github.com/b4zinga/Lance.git 将所有内容推送到远程仓库 git push -u origin master
以后只要本地有commit,就可以通过 8. 从远程库克隆git clone https://github.com/b4zinga/Lance.git 9. 创建与合并分支创建并切换到dev分支root@kali:~/Documents/test# git checkout -b dev Switched to a new branch 'dev' root@kali:~/Documents/test#
查看当前分支root@kali:~/Documents/test# git branch * dev master root@kali:~/Documents/test#
root@kali:~/Documents/test# echo "new beanch" >> README.md root@kali:~/Documents/test# git add README.md root@kali:~/Documents/test# git commit -m "branch" [dev bae88b5] branch Committer: root <root@localhost.localdomain> Your name and email address were configured automatically based on your username and hostname. Please check that they are accurate. You can suppress this message by setting them explicitly. Run the following command and follow the instructions in your editor to edit your configuration file: git config --global --edit After doing this, you may fix the identity used for this commit with: git commit --amend --reset-author 1 file changed, 1 insertion(+) root@kali:~/Documents/test# root@kali:~/Documents/test# git checkout master Switched to branch 'master' root@kali:~/Documents/test# cat README.md this is first commit second commot third commit root@kali:~/Documents/test#
合并分支root@kali:~/Documents/test# git merge dev Updating a62fe29..bae88b5 Fast-forward README.md | 1 + 1 file changed, 1 insertion(+) root@kali:~/Documents/test# cat README.md this is first commit second commot third commit new beanch root@kali:~/Documents/test#
删除分支root@kali:~/Documents/test# git branch -d dev Deleted branch dev (was bae88b5). root@kali:~/Documents/test# git branch * master root@kali:~/Documents/test#
|
|